package editorsvg.editor.estilo;

import editorsvg.svg.parser.ColorHandleAdapter;
import editorsvg.svg.parser.ColorParser;
import java.awt.Color;
import java.awt.Paint;

/**
 * Representa una pintura. Es un objeto inmutable.
 * @author Jorge Berjano
 */
public class Pintura implements Cloneable {
    private String texto;
    private Integer rgb;

    public Pintura(String texto) {
        this.texto = texto;
        this.rgb = null;
        
        ColorParser parser = new ColorParser();
        parser.setColorHandler(new ColorHandleAdapter() {
            
            @Override
            public void color(int rgb) {
                Pintura.this.rgb = rgb;
            }

            @Override
            public void id(String id) {
            }

            @Override
            public void invalid(String valor) {                
            }

            @Override
            public void none() {
            }
        });

        parser.parsearColor(texto);
    }
    
    public Pintura(int rgb) {
        this.rgb = rgb;
        this.texto = String.format("#%06X", rgb);
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Pintura other = (Pintura) obj;
        if (this.rgb != other.rgb && (this.rgb == null || !this.rgb.equals(other.rgb))) {
            return false;
        }
        return true;
    }
    
    public Paint getPaint() {
        if (getRgb() != null) {
            return new Color(getRgb());
        } else {
            return null;
        }            
    }    
    
    @Override
    public String toString() {
        return texto;
    }

    public Integer getRgb() {
        return rgb;
    }
}
